์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ ์ปดํฌ์ง์ ์์ ์ธํฐํ์ด์ค ์ ์ ์ธ์ด(IDL)์ ํต์ฌ ์ญํ ์ ํ๊ตฌํ๋ฉฐ, ์ํํ ์ํธ ์ด์ฉ์ฑ๊ณผ ๋ชจ๋์ฑ์ ํตํ ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ ์ปดํฌ์ง์ : ์ธํฐํ์ด์ค ์ ์ ์ธ์ด๋ฅผ ํตํ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ ์ํํธ์จ์ด ๊ตฌํ
์น์ด์ ๋ธ๋ฆฌ(Wasm) ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ๋ฑ์ฅ์ ์น์ด์ ๋ธ๋ฆฌ๋ฅผ ์ด๊ธฐ ๋ธ๋ผ์ฐ์ ์ค์ฌ์ ๊ธฐ์์ ํจ์ฌ ๋ฐ์ด๋์ด ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ง์ ํ ๋ฒ์ฉ ๋ฐํ์์ผ๋ก ๋ง๋๋ ๋ฐ ์์ด ์ค์ํ ๋์ฝ์ ์๋ฏธํฉ๋๋ค. ์ด ํ์ ์ ์ธ ์งํ์ ์ค์ฌ์๋ ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ํํธ์จ์ด ๋จ์๋ฅผ ๋ ํฌ๊ณ ๋ณต์กํ ์์คํ ์ผ๋ก ์กฐ๋ฆฝํ๋ ๋ฅ๋ ฅ์ธ ์ปดํฌ์ง์ (composition)์ด๋ผ๋ ๊ฐ๋ ์ด ์์ต๋๋ค. ์ด๋ฌํ ์ํํ ์ปดํฌ์ง์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํต์ฌ์ ์ธํฐํ์ด์ค์ ์๊ฒฉํ ์ ์์ ๊ด๋ฆฌ์ด๋ฉฐ, ์ด๋ ์ธํฐํ์ด์ค ์ ์ ์ธ์ด(IDL, Interface Definition Languages)์ ์ํด ํ๋ฅญํ๊ฒ ์ฒ๋ฆฌ๋๋ ์์ ์ ๋๋ค. ์ด ๊ฒ์๋ฌผ์์๋ ์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ์์ IDL์ ์ค์ํ ์ญํ ์ ์ฌ๋ ์๊ฒ ์ดํด๋ณด๊ณ , IDL์ด ์ด๋ป๊ฒ ์ธ์ด ๊ฐ ์ํธ ์ด์ฉ์ฑ์ ์ด์งํ๊ณ ๋ชจ๋์ฑ์ ํฅ์์ํค๋ฉฐ ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์๋ก์ด ํจ๋ฌ๋ค์์ ์ด์ด๊ฐ๋์ง ํ๊ตฌํฉ๋๋ค.
์งํํ๋ ์น์ด์ ๋ธ๋ฆฌ ํ๊ฒฝ: ๋ธ๋ผ์ฐ์ ๋ฅผ ๋์ด์
์ด๊ธฐ์ ์น ๋ธ๋ผ์ฐ์ ๋ด์์ ์์ ํ ์๋๋ฐ์ค ์ฝ๋ ์คํ์ ์ํด ์ค๊ณ๋ ์น์ด์ ๋ธ๋ฆฌ์ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ํ์ฅ๋์์ต๋๋ค. C++, Rust๋ถํฐ Go, ์ฌ์ง์ด ๋ค์ํ ํด์ฒด์ธ์ ํตํด Python, Java์ ๊ฐ์ ์ธ์ด์ ์ด๋ฅด๊ธฐ๊น์ง ๊ด๋ฒ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ ํ์์ผ๋ก ์ปดํ์ผํ๋ ๊ธฐ๋ฅ์ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ , ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์๋น์ค, ์ฃ์ง ์ปดํจํ ๋ฐ ์๋ฒ ๋๋ ์์คํ ์ ๋งค๋ ฅ์ ์ธ ์ ์์ด ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ปดํ์ผ๋ ๋ชจ๋ ๊ฐ, ํนํ ์๋ก ๋ค๋ฅธ ์ธ์ด์์ ๋น๋กฏ๋ ๋ชจ๋ ๊ฐ์ ์ง์ ํ ์ํธ ์ด์ฉ์ฑ์ ๋ฌ์ฑํ๋ ๊ฒ์ ์๋นํ ๊ณผ์ ์์ต๋๋ค.
์ ํต์ ์ธ ์ธ๋ถ ํจ์ ์ธํฐํ์ด์ค(FFI)๋ ํ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๊ฐ ๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋ ํจ์๋ฅผ ํธ์ถํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ต๋๋ค. ํน์ ์ธ์ด ์์ ๋ํด์๋ ํจ๊ณผ์ ์ด์์ง๋ง, FFI ๋ฉ์ปค๋์ฆ์ ์ข ์ข ํด๋น ์ธ์ด์ ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ ๋ฐ ํธ์ถ ๊ท์ฝ์ ๊ธด๋ฐํ๊ฒ ๊ฒฐํฉ๋ฉ๋๋ค. ์ด๋ก ์ธํด ๋ถ์์ ํ ํตํฉ, ์ด์์ฑ ๋ฌธ์ , ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ์๋ก์ด ์ธ์ด ๋ฐ์ธ๋ฉ์ ๋ํ ์๋นํ ์์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ํ์คํ๋ ๊ณ ์์ค ์ธํฐํ์ด์ค ์ถ์ํ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ์ด๋ฌํ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋์์ต๋๋ค.
์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ ์ดํดํ๊ธฐ
์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ๊ณ์ฐ ๋ฐ ์ํธ ์์ฉ์ ๋ ๋ฆฝ์ ์ธ ๋จ์์ธ ์ปดํฌ๋ํธ(components)๋ผ๋ ๊ฐ๋ ์ ๋์ ํฉ๋๋ค. ์ฃผ๋ก ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ฉด์ ์ธ ํจ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ ธ์ถํ๋ ๊ธฐ์กด์ Wasm ๋ชจ๋๊ณผ ๋ฌ๋ฆฌ, ์ปดํฌ๋ํธ๋ ์์ ์ ์ธํฐํ์ด์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํฉ๋๋ค. ์ด๋ฌํ ์ธํฐํ์ด์ค๋ ์ปดํฌ๋ํธ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ(exports)๊ณผ ํ์๋ก ํ๋ ์์กด์ฑ(imports)์ ์ ์ธํฉ๋๋ค.
์ปดํฌ๋ํธ ๋ชจ๋ธ์ ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ช ์์ ์ธํฐํ์ด์ค: ์ปดํฌ๋ํธ๋ ์ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ํต์ ํ๋ฉฐ, ๊ธฐ๋ณธ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ์ํํฉ๋๋ค.
- ํ์ ์์ ์ฑ: ์ธํฐํ์ด์ค๋ ๊ฐ๋ ฅํ ํ์ ์ ๊ฐ์ง๋ฏ๋ก ์ปดํฌ๋ํธ๊ฐ ์ ํํ๊ณ ์์ ํ๊ฒ ์ํธ ์์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ๋ฆฌ์์ค ๊ด๋ฆฌ: ์ด ๋ชจ๋ธ์ ์ปดํฌ๋ํธ ๊ฒฝ๊ณ๋ฅผ ๋์ด ๋ฉ๋ชจ๋ฆฌ ๋ฐ ํธ๋ค๊ณผ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฉ์ปค๋์ฆ์ ํฌํจํฉ๋๋ค.
- WASI (์น์ด์ ๋ธ๋ฆฌ ์์คํ ์ธํฐํ์ด์ค): WASI๋ ์ปดํฌ๋ํธ๊ฐ ํ์ฉํ ์ ์๋ ํ์คํ๋ ์์คํ ์ธํฐํ์ด์ค(ํ์ผ I/O, ๋คํธ์ํน ๋ฑ)๋ฅผ ์ ๊ณตํ์ฌ ๋ค์ํ ํธ์คํธ ํ๊ฒฝ์์์ ์ด์์ฑ์ ๋ณด์ฅํฉ๋๋ค.
์ด๋ฌํ ์ธํฐํ์ด์ค ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์์ ์ธํฐํ์ด์ค ์ ์ ์ธ์ด๋ ์์ด์๋ ์ ๋ ์กด์ฌ๊ฐ ๋ฉ๋๋ค.
์ธํฐํ์ด์ค ์ ์ ์ธ์ด(IDL)์ ํต์ฌ ์ญํ
์ธํฐํ์ด์ค ์ ์ ์ธ์ด(IDL)๋ ์ํํธ์จ์ด ์ปดํฌ๋ํธ์ ์ธํฐํ์ด์ค๋ฅผ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ณต์ ์ธ์ด์ ๋๋ค. ์ด๋ ์ปดํฌ๋ํธ๊ฐ ๋ ธ์ถํ๊ณ ์๋นํ๋ ๋ฐ์ดํฐ ํ์ , ํจ์, ๋ฉ์๋ ๋ฐ ๊ทธ ์๊ทธ๋์ฒ๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๋ฌํ ์ํธ ์์ฉ์ ๋ํ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์๋ ์ถ์์ ์ธ ํํ์ ์ ๊ณตํจ์ผ๋ก์จ, IDL์ ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์ปดํฌ๋ํธ๊ฐ ์์ ์ ์ผ๋ก ํต์ ํ ์ ์๋๋ก ํ๋ '์ ์ฐฉ์ ' ์ญํ ์ ํฉ๋๋ค.
์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ๋งฅ๋ฝ์์ IDL์ ๋ช ๊ฐ์ง ์ค์ถ์ ์ธ ์ญํ ์ ํฉ๋๋ค:
1. ์ปดํฌ๋ํธ ์ธํฐํ์ด์ค ์ ์
์ด ๋ชจ๋ธ์์ IDL์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ปดํฌ๋ํธ ๊ฐ์ ๊ณ์ฝ์ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ณ์ฝ์ ๋ค์์ ์ง์ ํฉ๋๋ค:
- ํจ์: ์ด๋ฆ, ๋งค๊ฐ๋ณ์(ํ์ ํฌํจ), ๋ฐํ ๊ฐ(ํ์ ํฌํจ).
- ๋ฐ์ดํฐ ๊ตฌ์กฐ: ๋ ์ฝ๋(๊ตฌ์กฐ์ฒด๋ ํด๋์ค์ ์ ์ฌ), ๋ฒ ๋ฆฌ์ธํธ(์ฐ๊ด ๋ฐ์ดํฐ๊ฐ ์๋ ์ด๊ฑฐํ), ๋ฆฌ์คํธ ๋ฐ ๊ธฐํ ๋ณตํฉ ํ์ .
- ๋ฆฌ์์ค: ์ปดํฌ๋ํธ ๊ฐ์ ์ ๋ฌ๋ ์ ์๋ ๊ด๋ฆฌํ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด๋ ์ถ์ ํ์ .
- ์ถ์ํ: ์ปดํฌ๋ํธ๊ฐ ์ ๊ณตํ๊ฑฐ๋ ์๊ตฌํ ์ ์๋ ๊ธฐ๋ฅ(์: I/O ์ ๊ทผ ๋๋ ํน์ ์๋น์ค).
์ ์ ์๋ IDL์ ์ธํฐํ์ด์ค์ ์์ฐ์์ ์๋น์ ๋ชจ๋๊ฐ ๊ตฌํ ์ธ์ด์ ๊ด๊ณ์์ด ๊ทธ ๊ตฌ์กฐ์ ๋์์ ๋ํด ๊ณต์ ๋ ์ดํด๋ฅผ ๊ฐ๋๋ก ๋ณด์ฅํฉ๋๋ค.
2. ์ธ์ด ๊ฐ ์ํธ ์ด์ฉ์ฑ ๊ตฌํ
์ด๊ฒ์ ์๋ง๋ IDL์ด Wasm ์ปดํฌ์ง์ ์ ๊ธฐ์ฌํ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ถ๋ถ์ผ ๊ฒ์ ๋๋ค. IDL์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ์ธํฐํ์ด์ค๋ฅผ ํ ๋ฒ ์ ์ํ ๋ค์, ์ธ์ด๋ณ ๋ฐ์ธ๋ฉ(์ถ์ ์ธํฐํ์ด์ค ์ ์๋ฅผ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ด์ฉ์ ์ธ ๊ตฌ์กฐ๋ก ๋ณํํ๋ ์ฝ๋, ์: Rust ๊ตฌ์กฐ์ฒด, C++ ํด๋์ค, Python ๊ฐ์ฒด)์ ์์ฑํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, Rust๋ก ์์ฑ๋ ์ปดํฌ๋ํธ๊ฐ IDL์ ์ํด ์ ์๋ ์๋น์ค๋ฅผ ๋ด๋ณด๋ด๋ ๊ฒฝ์ฐ, IDL ํด์ฒด์ธ์ ๋ค์์ ์์ฑํ ์ ์์ต๋๋ค:
- ์๋น์ค ๊ตฌํ์ ์ํ Rust ์ฝ๋.
- Python ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋น์ค๋ฅผ ํธ์ถํ๊ธฐ ์ํ Python ๋ฐ์ธ๋ฉ.
- ์น ํ๋ก ํธ์๋์์ ์๋น์ค๋ฅผ ์๋นํ๊ธฐ ์ํ JavaScript ๋ฐ์ธ๋ฉ.
- Go ๋ง์ดํฌ๋ก์๋น์ค์ ์๋น์ค๋ฅผ ํตํฉํ๊ธฐ ์ํ Go ๋ฐ์ธ๋ฉ.
์ด๋ ์ฌ๋ฌ ์ธ์ด ์กฐํฉ์ ๋ํ FFI ๊ณ์ธต์ ๊ตฌ์ถํ๊ณ ์ ์งํ๋ ๋ฐ ๋ฐ๋ฅด๋ ์์์ ๊ณผ ์ ์ฌ์ ์ค๋ฅ๋ฅผ ๋ํญ ์ค์ฌ์ค๋๋ค.
3. ๋ชจ๋์ฑ ๋ฐ ์ฌ์ฌ์ฉ์ฑ ์ฆ์ง
์ ์ ์๋ ์ธํฐํ์ด์ค ๋ค์ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ์ถ์ํํจ์ผ๋ก์จ, IDL์ ์ง์ ํ ๋ชจ๋์ฑ์ ์ด์งํฉ๋๋ค. ๊ฐ๋ฐ์๋ ํน์ ์ญํ ์ ์ํํ๋ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ง์คํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ค์ ์ธํฐํ์ด์ค๊ฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ถ์ฒ์ ๊ด๊ณ์์ด ์ดํด๋๊ณ ํ์ฉ๋ ์ ์๋ค๋ ํ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๋ ๋ ํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ฝ๊ฒ ๊ตฌ์ฑ๋ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์๋น์ค์ ์์ฑ์ ์ด์งํ์ฌ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค.
4. ํด๋ง ๋ฐ ๊ฐ๋ฐ ๊ฒฝํ ํฅ์
IDL์ ๊ฐ๋ ฅํ ๊ฐ๋ฐ์ ๋๊ตฌ์ ๊ธฐ๋ฐ์ด ๋ฉ๋๋ค:
- ์ ์ ๋ถ์: IDL์ ํ์์ ์ธ ํน์ฑ์ ์ ๊ตํ ์ ์ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋ฐํ์ ์ด์ ์ ์ธํฐํ์ด์ค ๋ถ์ผ์น ๋ฐ ์ ์ฌ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํฉ๋๋ค.
- ์ฝ๋ ์์ฑ: ์์ ์ธ๊ธํ๋ฏ์ด, IDL์ ๋ฐ์ธ๋ฉ, ์ง๋ ฌํ, ์ฌ์ง์ด ํ ์คํธ์ฉ ๋ชจ์ ๊ตฌํ์ ์ํ ์ฝ๋ ์์ฑ์ ์ฃผ๋ํฉ๋๋ค.
- ๋ฌธ์ํ: IDL์ API ๋ฌธ์๋ฅผ ์์ฑํ๋ ๋ฐ ์ง์ ์ฌ์ฉ๋ ์ ์์ด ์ธํฐํ์ด์ค ์ค๋ช ์ด ํญ์ ๊ตฌํ๊ณผ ์ต์ ์ํ๋ฅผ ์ ์งํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ด๋ฌํ ์๋ํ๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์์ผ, ๋ณต์กํ ์ปดํฌ๋ํธ ๊ฐ ํต์ ๋ฐฐ๊ด ์์ ๋ณด๋ค๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๊ฒ ํฉ๋๋ค.
์น์ด์ ๋ธ๋ฆฌ ์ํ๊ณ์ ์ฃผ์ IDL
์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ ์ฌ์ ์์ฒด๊ฐ ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ ๊ณตํ์ง๋ง, ์ด๋ฌํ ๊ฐ๋ ์ ์ค์ ๋ก ๊ตฌํํ๊ธฐ ์ํด ํน์ IDL์ด ๋ฑ์ฅํ๊ณ ํตํฉ๋๊ณ ์์ต๋๋ค. ๋ ๊ฐ์ง ๋๋๋ฌ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. ์ธํฐํ์ด์ค ๊ธฐ์ ์ธ์ด(IDL) ์ฌ์ (์์ ์งํ ์ค)
์น์ด์ ๋ธ๋ฆฌ ์ปค๋ฎค๋ํฐ๋ ํ์ค IDL ์ฌ์์ ํ๋ฐํ๊ฒ ๊ฐ๋ฐํ๊ณ ์์ผ๋ฉฐ, ์ข ์ข ๋จ์ํ 'the IDL' ๋๋ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ๊ณต์ ์ธํฐํ์ด์ค ํ์ ๋งฅ๋ฝ์์ ์ธ๊ธ๋ฉ๋๋ค. ์ด ์ฌ์์ ์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ์ธํฐํ์ด์ค๋ฅผ ์ค๋ช ํ๊ธฐ ์ํ ๋ณดํธ์ ์ด๊ณ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์๋ ํ์์ ์ ์ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์ด ์๋ก์ด ์ฌ์์ ์ฃผ์ ํน์ง์ ์ข ์ข ๋ค์์ ํฌํจํฉ๋๋ค:
- ๊ธฐ๋ณธ ํ์ : ์ ์(s8, u32, i64), ๋ถ๋์์์ (f32, f64), ๋ถ๋ฆฌ์ธ, ๋ฌธ์ ๋ฑ ๊ธฐ๋ณธ ํ์ .
- ๋ณตํฉ ํ์ : ๋ ์ฝ๋(์ด๋ฆ ์๋ ํ๋), ํํ(์์ ์๋ ํ๋), ๋ฒ ๋ฆฌ์ธํธ(ํ๊ทธ๋ ์ ๋์ธ), ๋ฆฌ์คํธ.
- ๋ฆฌ์์ค: ๊ด๋ฆฌ๋๋ ์ํฐํฐ๋ฅผ ๋ํ๋ด๋ ์ถ์ ํ์ .
- ํจ์ ๋ฐ ๋ฉ์๋: ๋งค๊ฐ๋ณ์, ๋ฐํ ํ์ , ์ ์ฌ์ ๋ฆฌ์์ค ์์ ๊ถ ์ด์ ์ ํฌํจํ ์๊ทธ๋์ฒ.
- ์ธํฐํ์ด์ค: ํจ๊ป ๊ทธ๋ฃนํ๋ ํจ์ ๋ฐ ๋ฉ์๋์ ์ปฌ๋ ์ .
- ๊ธฐ๋ฅ: ์ปดํฌ๋ํธ๊ฐ ์ ๊ณตํ๊ฑฐ๋ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๊ณ ์์ค ์ถ์ํ.
์ด ์ฌ์์ ์ด๋ฌํ ์ธํฐํ์ด์ค ์ค๋ช ์ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐ์ธ๋ฉ์ผ๋ก ๋ณํํ๋ wit-bindgen๊ณผ ๊ฐ์ ํด์ฒด์ธ์ ๊ธฐ์ด๊ฐ ๋ฉ๋๋ค.
2. Protocol Buffers (Protobuf) ๋ฐ gRPC
์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ์ธํฐํ์ด์ค ํ์ ์ ์ํด ํน๋ณํ ์ค๊ณ๋์ง๋ ์์์ง๋ง, Google์ด ๊ฐ๋ฐํ Protocol Buffers๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํ๊ธฐ ์ํ ๋๋ฆฌ ์ฑํ๋ ์ธ์ด ์ค๋ฆฝ์ , ํ๋ซํผ ์ค๋ฆฝ์ , ํ์ฅ ๊ฐ๋ฅํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. Protobuf ์์ ๊ตฌ์ถ๋ ํ๋์ ์ด๊ณ ๊ณ ์ฑ๋ฅ์ RPC ํ๋ ์์ํฌ์ธ gRPC ๋ํ ๊ฐ๋ ฅํ ๊ฒฝ์์์ ๋๋ค.
์ด๋ป๊ฒ ๋ถํฉํ๋๊ฐ:
- ๋ฐ์ดํฐ ์ง๋ ฌํ: Protobuf๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ ํจ์จ์ ์ผ๋ก ์ง๋ ฌํํ๋ ๋ฐ ํ์ํฉ๋๋ค. ์ด๋ Wasm ์ปดํฌ๋ํธ์ ํธ์คํธ ๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- RPC ํ๋ ์์ํฌ: gRPC๋ ์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ์์ ๊ตฌํ๋ ์ ์๋ ๊ฒฌ๊ณ ํ RPC ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ ์๋น์ค ๊ฐ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ฝ๋ ์์ฑ: Protobuf์ IDL(`.proto` ํ์ผ)์ Wasm์ผ๋ก ์ปดํ์ผ๋ ์ ์๋ ๋ค์ํ ์ธ์ด์ Wasm ์ปดํฌ๋ํธ์ ์ํธ ์์ฉํ๋ ํธ์คํธ ํ๊ฒฝ์ ์ํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
Protobuf์ gRPC๊ฐ ๋ฉ์์ง ํ์๊ณผ RPC ๊ณ์ฝ์ ์ ์ํ๋ ๋ฐ๋ฉด, ์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ IDL์ Wasm ์ปดํฌ๋ํธ ์์ฒด๊ฐ ๋ ธ์ถํ๊ณ ์๋นํ๋ ์ถ์ ์ธํฐํ์ด์ค ํ์ ์ ๋ ์ค์ ์ ๋๋ฉฐ, ์ข ์ข Wasm ๋ฐํ์๊ณผ ์ฐ๊ฒฐ๋ ๋ ๋ฎ์ ์์ค์ ํ๋ฆฌ๋ฏธํฐ๋ธ ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ ๊ฐ๋ ์ ํฌํจํฉ๋๋ค.
3. ๊ธฐํ ์ ์ฌ์ IDL (์: OpenAPI, Thrift)
OpenAPI(REST API์ฉ)๋ Apache Thrift์ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ์กด IDL๋ Wasm ์ปดํฌ์ง์ ์์ ์ญํ ์ ์ฐพ์ ์ ์์ผ๋ฉฐ, ํนํ Wasm ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ์กด ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ํตํฉํ๊ฑฐ๋ ๋ณต์กํ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์ ์ํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Wasm ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ๋ชฉํ์ ๊ฐ์ฅ ์ง์ ์ ์ผ๋ก ์ผ์นํ๋ ๊ฒ์ ๋ชจ๋ธ์ ์ธํฐํ์ด์ค ํ์ ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ ํ๋ฆฌ๋ฏธํฐ๋ธ์ ๊ธด๋ฐํ๊ฒ ๋งคํ๋๋๋ก ์ค๊ณ๋ IDL์ ๋๋ค.
IDL์ ์ฌ์ฉํ Wasm ์ปดํฌ์ง์ ์ ์ค์ ์์
IDL์ ์ํด ๊ตฌ๋๋๋ Wasm ์ปดํฌ๋ํธ ์ปดํฌ์ง์ ์ ํ์ ๋ณด์ฌ์ฃผ๋ ๋ช ๊ฐ์ง ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค:
์์ 1: ๊ต์ฐจ ํ๋ซํผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ
๋ค๋ฅธ ๋จ๊ณ๊ฐ Wasm ์ปดํฌ๋ํธ๋ก ๊ตฌํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค:
- ์ปดํฌ๋ํธ A (Rust): WASI ์ ๊ทผ ๊ฐ๋ฅ ํ์ผ(์: CSV)์์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค. ํ ๋ชฉ๋ก์ ๋ฐ์ ์ฒ๋ฆฌ๋ ๋ชฉ๋ก์ ๋ฐํํ๋ `process_csv_batch` ํจ์๋ฅผ ๋ด๋ณด๋ ๋๋ค.
- ์ปดํฌ๋ํธ B (Python): ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๋ํด ๋ณต์กํ ํต๊ณ ๋ถ์์ ์ํํฉ๋๋ค. `process_csv_batch` ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ต๋๋ค.
- ์ปดํฌ๋ํธ C (Go): ๋ถ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ํน์ ๋ฐ์ด๋๋ฆฌ ํ์์ผ๋ก ์ง๋ ฌํํฉ๋๋ค. ๋ถ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ํจ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
IDL ์ฌ์ฉ (์: Wasm ์ปดํฌ๋ํธ ๋ชจ๋ธ์ IDL):
- ์ธํฐํ์ด์ค ์ ์: IDL ํ์ผ์ `Row` ํ์ (์: ๋ฌธ์์ด ํ๋๋ฅผ ๊ฐ์ง ๋ ์ฝ๋), `process_csv_batch` ํจ์ ์๊ทธ๋์ฒ(`Row` ๋ชฉ๋ก์ ๋ฐ๊ณ `AnalysisResult` ๋ชฉ๋ก์ ๋ฐํ), ๊ทธ๋ฆฌ๊ณ `store_analysis` ํจ์ ์๊ทธ๋์ฒ๋ฅผ ์ ์ํฉ๋๋ค.
- ๋ฐ์ธ๋ฉ ์์ฑ: `wit-bindgen` ๋๊ตฌ(๋๋ ์ ์ฌํ ๋๊ตฌ)๋ ์ด IDL์ ์ฌ์ฉํ์ฌ ๋ค์์ ์์ฑํฉ๋๋ค:
- ์ปดํฌ๋ํธ A๊ฐ `process_csv_batch`์ `store_analysis`๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ด๋ณด๋ด๊ธฐ ์ํ Rust ์ฝ๋.
- ์ปดํฌ๋ํธ B๊ฐ `process_csv_batch`๋ฅผ ๊ฐ์ ธ์ ํธ์ถํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ `store_analysis`์ ์ ๋ฌํ๊ธฐ ์ํ Python ์ฝ๋.
- ์ปดํฌ๋ํธ C๊ฐ `store_analysis`๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ Go ์ฝ๋.
- ์ปดํฌ์ง์ : Wasm ๋ฐํ์(Wasmtime ๋๋ WAMR ๋ฑ)์ ์ด๋ฌํ ์ปดํฌ๋ํธ๋ฅผ ์ฐ๊ฒฐํ๋๋ก ๊ตฌ์ฑ๋์ด ํ์ํ ํธ์คํธ ํจ์๋ฅผ ์ ๊ณตํ๊ณ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
์ด ์ค์ ์ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ฅ ์ ํฉํ ์ธ์ด๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ ์งํ ์ ์๊ฒ ํ๋ฉฐ, IDL์ ์ด๋ค ๊ฐ์ ์ํํ ๋ฐ์ดํฐ ํ๋ฆ๊ณผ ํจ์ ํธ์ถ์ ๋ณด์ฅํฉ๋๋ค.
์์ 2: ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฑ์๋
๋ถ์ฐ ๋คํธ์ํฌ๋ ๋ธ๋ก์ฒด์ธ์ ๋ฐฐํฌ๋ Wasm ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ (dApp)์ ๋ฐฑ์๋๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค:
- ์ปดํฌ๋ํธ D (Solidity/Wasm): ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ธฐ๋ณธ ํ๋กํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. `authenticate_user` ๋ฐ `get_profile`์ ๋ด๋ณด๋ ๋๋ค.
- ์ปดํฌ๋ํธ E (Rust): ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง ๋ฐ ์ค๋งํธ ๊ณ์ฝ ์ํธ ์์ฉ์ ์ฒ๋ฆฌํฉ๋๋ค. `authenticate_user` ๋ฐ `get_profile`์ ๊ฐ์ ธ์ต๋๋ค.
- ์ปดํฌ๋ํธ F (JavaScript/Wasm): ํ๋ก ํธ์๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ํ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ปดํฌ๋ํธ D์ E์ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ต๋๋ค.
IDL ์ฌ์ฉ:
- ์ธํฐํ์ด์ค ์ ์: IDL์ ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช , ํ๋กํ ์ ๋ณด์ ๋ํ ํ์ ๊ณผ ์ธ์ฆ ๋ฐ ๋ฐ์ดํฐ ๊ฒ์ ํจ์์ ์๊ทธ๋์ฒ๋ฅผ ์ ์ํฉ๋๋ค.
- ์ธ์ด ๋ฐ์ธ๋ฉ: ๋๊ตฌ๋ Solidity(๋๋ Solidity-to-Wasm ํด์ฒด์ธ), Rust, JavaScript์ ๋ํ ๋ฐ์ธ๋ฉ์ ์์ฑํ์ฌ ์ด๋ฌํ ์ปดํฌ๋ํธ๊ฐ ์๋ก์ ์ธํฐํ์ด์ค๋ฅผ ์ดํดํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ฐฐํฌ: Wasm ๋ฐํ์์ ์ ์ฌ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ์คํ ํ๊ฒฝ(์: ์จ์ฒด์ธ, ์คํ์ฒด์ธ)์์ ์ธ์คํด์คํ ๋ฐ ์ปดํฌ๋ํธ ๊ฐ ํต์ ์ ๊ด๋ฆฌํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ ์์ ์ ๊ฐ์ฅ ์ ํฉํ ์ธ์ด๋ก ์์ฑ๋ ์ ๋ฌธํ๋ ์ปดํฌ๋ํธ(์: ์จ์ฒด์ธ ๋ก์ง์ ์ํ Solidity, ์ฑ๋ฅ์ด ์ค์ํ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ํ Rust)๋ฅผ ์์ง๋ ฅ ์๊ณ ๊ฒฌ๊ณ ํ dApp ๋ฐฑ์๋๋ก ๊ตฌ์ฑํ ์ ์๊ฒ ํฉ๋๋ค.
๊ณผ์ ์ ๋ฏธ๋ ๋ฐฉํฅ
์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ๊ณผ IDL์ ์ญํ ์ ์ ๋งํ์ง๋ง, ๋ช ๊ฐ์ง ๊ณผ์ ์ ํฅํ ๊ฐ๋ฐ ์์ญ์ด ์กด์ฌํฉ๋๋ค:
- ํ์คํ ์ฑ์๋: ์ปดํฌ๋ํธ ๋ชจ๋ธ๊ณผ ๊ด๋ จ IDL ์ฌ์์ ์ฌ์ ํ ์งํ ์ค์ ๋๋ค. ๊ด๋ฒ์ํ ์ฑํ์ ์ํด์๋ ์ง์์ ์ธ ํ์คํ ๋ ธ๋ ฅ์ด ์ค์ํฉ๋๋ค.
- ํด๋ง ๊ฒฌ๊ณ ์ฑ: `wit-bindgen`๊ณผ ๊ฐ์ ๋๊ตฌ๋ ๊ฐ๋ ฅํ์ง๋ง, ๋ชจ๋ ์ธ์ด์ ๋ณต์กํ ์ธํฐํ์ด์ค ์๋๋ฆฌ์ค์ ๋ํ ํฌ๊ด์ ์ธ ์ง์์ ๋ณด์ฅํ๋ ๊ฒ์ ๊ณ์ ์งํ ์ค์ธ ๋ ธ๋ ฅ์ ๋๋ค.
- ์ฑ๋ฅ ์ค๋ฒํค๋: IDL๊ณผ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ์ํด ๋์ ๋ ์ถ์ํ ๊ณ์ธต์ ๋๋๋ก ์ง์ ์ ์ธ FFI์ ๋นํด ์ฝ๊ฐ์ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ณ์ธต์ ์ต์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๋๋ฒ๊น ๋ฐ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ: ์ฌ๋ฌ Wasm ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ํ๋ ๊ฒ, ํนํ ์ฌ๋ฌ ์ธ์ด์ ๊ฑธ์ณ ์๋ ๊ฒฝ์ฐ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ฐ์ ๋ ๋๋ฒ๊น ๋๊ตฌ์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค.
- ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ณต์ก์ฑ: ์ปดํฌ๋ํธ ๋ชจ๋ธ์ด ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ์ง๋ง, ํนํ ๋ณต์กํ ๊ฐ์ฒด ๊ทธ๋ํ๋ ์๋ช ์ฃผ๊ธฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ๋ ค๋ฉด ์ธ์ฌํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
๋ฏธ๋์๋ ๋ ์ ๊ตํ IDL, ์๋ ์ธํฐํ์ด์ค ๋ฐ๊ฒฌ ๋ฐ ๊ฒ์ฆ์ ์ํ ํฅ์๋ ํด๋ง, ๊ธฐ์กด ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ ๋ถ์ฐ ์์คํ ํจ๋ฌ๋ค์๊ณผ์ ๋ ๊น์ ํตํฉ์ด ์ด๋ฃจ์ด์ง ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ํ์คํ๋ IDL์ ์ฌ์ฉํ์ฌ Wasm ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฅ๋ ฅ์ ๊ด๋ฒ์ํ ๊ธ๋ก๋ฒ ์ปดํจํ ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์ณ ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ํต์ฌ ๋๋ ฅ์ด ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก : ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ์ํธ ์ด์ฉ์ฑ์ ์ํ ๊ธฐ๋ฐ
์ธํฐํ์ด์ค ์ ์ ์ธ์ด์ ์ํด ๊ฐํ๋ ์น์ด์ ๋ธ๋ฆฌ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ์ฐ๋ฆฌ๊ฐ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ์ปดํฌ์ง์ ์ ๋ํด ์๊ฐํ๋ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ฐ๊พธ๊ณ ์์ต๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ์คํ๋๊ณ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํจ์ผ๋ก์จ, IDL์ ์ธ์ด ์ฌ์ผ๋ก์ ์ฅ๋ฒฝ์ ํ๋ฌผ๊ณ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ก ๋ณต์กํ๊ณ ๋ชจ๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ํฉ๋๋ค.
๊ณ ์ฑ๋ฅ ์ปดํจํ , ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์๋น์ค, ์ฃ์ง ์ฅ์น ์ธํ ๋ฆฌ์ ์ค, ๋๋ ๋ํํ ์น ๊ฒฝํ ๋ฑ ์ด๋ค ๋ถ์ผ์์๋ , ๋ค์ํ ์ธ์ด๋ก ์์ฑ๋ ์ํํธ์จ์ด ๋จ์๋ฅผ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ๋ฅ๋ ฅ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์น์ด์ ๋ธ๋ฆฌ๋ ์ปดํฌ๋ํธ ๋ชจ๋ธ๊ณผ IDL์ ์ค์ํ ์ง์์ ํตํด ์ํํธ์จ์ด ์ํธ ์ด์ฉ์ฑ์ด ๊ทน๋ณตํด์ผ ํ ๋ณต์กํ ๊ณผ์ ๊ฐ ์๋๋ผ, ํ์ ์ ๊ฐ์ํํ๊ณ ์ ์ธ๊ณ ๊ฐ๋ฐ์์๊ฒ ํ์ ์ค์ด์ฃผ๋ ๊ธฐ๋ณธ ๋ฅ๋ ฅ์ด ๋๋ ๋ฏธ๋๋ฅผ ์ํ ๊ธฐ๋ฐ์ ๋ค์ง๊ณ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ์์ฉํ๋ ๊ฒ์ ์ฐจ์ธ๋ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ก์ด ์ฐจ์์ ์ ์ฐ์ฑ, ์ ์ง๋ณด์์ฑ, ์ด์์ฑ์ ์ฌ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.